home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 501-525 / disk_523 / screenjaeger / screen_jaeger.doc < prev    next >
Text File  |  1992-05-06  |  17KB  |  360 lines

  1.  *************************************************************************
  2.  *                                                                       *
  3.  *                           SCREEN JAEGER V1.0                          *
  4.  *                                                                       *
  5.  *  'Jaeger' - German for 'Hunter'. I'm not German, but I like the word. *
  6.  *                                                                       *
  7.  *                        Written by Syd L. Bolton                       *
  8.  *                                                                       *
  9.  *           Copyright ©1991 Legendary Design Technologies Inc.          *
  10.  *                         Freely Redistributable                        *
  11.  *                                                                       *
  12.  *    Source code is included, but may not be used for any commercial    *
  13.  *  use without written permission. Contact information at end of file.  *
  14.  *************************************************************************
  15.  
  16. INTRODUCTION
  17. ~~~~~~~~~~~~
  18.  
  19.     The Amiga's MultiTasking Operating System is a wonder to behold.
  20. However, many programmers (especially game programmers) for reasons ranging
  21. from ignorance to legitimate speed concerns have often trashed the wonderful
  22. task-switching kernel of our favourite machine.  Many utilities that have
  23. been written on the Amiga are meant to MultiTask and when other programs
  24. don't cooperate, this causes problems for all users.
  25.     A good example of the type of utility I am talking about is
  26. Screen Grabbers.  Many of us are not artists, and we like to fiddle with
  27. DeluxePaint (tm) but grabbing screens from other programs (for personal
  28. use only of course) can save a lot of time and add professionalism to
  29. home videos or other things.  Utilities like GrabbIt (tm) and ScreenX
  30. are great programs, but they MUST be able to work in a MultiTasking
  31. environment.  Many times, this is not able to be done and we can't
  32. grab the screens we would like to.
  33.     Never fear!  Screen Jaeger is here!  Although the concept of
  34. this program is not exactly new, I believe it is the most complete and
  35. flexible program of this type and incorporates many ideas not thought
  36. of before.
  37.     The program works by letting you scan through all available
  38. memory to locate screens.  When you get the mock-up screen exactly
  39. as you want it, you can then save the picture to an IFF file for later
  40. editing or whatever.  The reason it does not need to be in a MultiTasking
  41. environment (although it WILL work in such an environment) is because
  42. when you REBOOT your machine, most memory is still intact, including
  43. screens from the last program you had loaded.  Normally, the system
  44. does not let you access this information, because it is located in the
  45. "free pool" of available memory.  But, usually pictures are there and
  46. you can now make use of them.
  47.  
  48. PROGRAM REQUIREMENTS
  49. ~~~~~~~~~~~~~~~~~~~~
  50.  
  51.     NOTE: This program REQUIRES the "iff.library" to be located in your
  52. SYS:LIBS: directory.  It should have been included with this distribution
  53. package.  Enter the CLI or SHELL, and enter the sub-directory that
  54. 'Screen Jaeger' is in (using the CD command) and then type:
  55.  
  56. 1>copy iff.library sys:libs:
  57.  
  58.     If you are using a floppy-based WorkBench, you will have to remove
  59. the write-protect tab for this file to be written to your system disk.
  60.  
  61.     This program is currently approximately 30K (though I am working
  62. on reducing this size) and the screen it opens for itself takes up about
  63. 9K for a total of roughly 40K.  Memory usage is important because:
  64.  
  65.     a) Any memory allocation after the system starts will write OVER
  66. any pictures that may be in memory.  The less allocation you do, the
  67. more chances you have of finding what you are looking for.
  68.  
  69.     b) The WorkBench screen itself takes up 32K on an NTSC machine,
  70. and 41K on a PAL machine, provided you boot up in NON-INTERLACED mode
  71. (that is, 640X200 NTSC, 2-bitplanes (4 colors)).  This is the recommended
  72. boot-up screen to use.
  73.  
  74.     c) Because 'Screen Jaeger' uses 40K, a minimum total of 72K of
  75. memory (plus various system pointers and buffers) gets written over.
  76. In most cases this is not tragic since they usually trash lower memory
  77. and game/program screens tend to get loaded higher.
  78.  
  79. USING SCREEN JAEGER
  80. ~~~~~~~~~~~~~~~~~~~
  81.  
  82.     When you first run the program, you may think something is wrong
  83. with your machine.  The screen you see will most likely be all garbled,
  84. with a small (640 X 56 pixel) window at the bottom of the screen.
  85. (NOTE: This program does support both NTSC and PAL machines, so if you
  86. have a PAL machine the window will be at the VERY bottom of the screen).
  87. What you are seeing is MEMORY!  Screen Jaeger works by letting you change
  88. the pointers of a screen's BITMAPS.  Instead of actually allocating
  89. memory for the screen it just lets you move the pointer(s) around to
  90. wherever you desire.
  91.  
  92.     The first thing you will probably notice is the four directional
  93. arrows on the left-hand side of the control window.  These can work in
  94. slightly different ways, but are mainly used to control where you are
  95. in memory.  There is a string gadget located nearby called "OFFSET" which
  96. gives you the actual memory location you are currently seeing (starting
  97. of course from the upper-left corner of the display).  You can manually
  98. modify this gadget to jump to a certain position, or use the proportional
  99. gadget to move around, or of course use the arrows.  If you try to access
  100. a memory location too high or too low, the program will automatically
  101. place you at the proper limit.
  102.     When moving through memory if you find that you don't have enough
  103. control with the directional gadgets, try clicking on the "FINE" gadget.
  104. Now, the directional gadgets give you a finer control over the display.
  105. Click "FINE" again to turn this feature off.
  106.  
  107.     The program defaults to 1 bitplane, but you can easily modify
  108. this by clicking the UP and DOWN "PLANES" gadgets.  You work on only
  109. one bitplane at a time, as highlighted by the gagdets "1" through "6"
  110. in the middle-upper part of the control window.  To change which bitplane
  111. you a working on, just click on the one you desire.  Note of course the
  112. program will not let you click on a bitplane higher than you have currently
  113. specified you will be using.  You can also "SWAP" and "COPY" bitplane
  114. information.  See the explanation of each gadget below for more information.
  115.  
  116.     Screen Jaeger also allows complete control over the "SCREEN MODES"
  117. to allow you to see a HI-RES, INTERLACE, EXTRA_HALFBRITE, or HAM display.
  118. Note that it is up to the user to determine how many bitplanes and what
  119. type of display is required.  You can also manually control the WIDTH
  120. and HEIGHT of the screen by modifying the string gadgets.
  121.  
  122.     There is a string gadget which stores the "FILENAME" for saving
  123. purposes.  Because I wanted to keep memory requirements to a minimum,
  124. there is NO file requester.  Instead, just key in the filename, and
  125. include any disk designation if necessary (otherwise, the file will be
  126. sent to the current directory).  Example:
  127.  
  128. df0:mypicture.pic
  129.  
  130.     When you click on the SAVE»IFF gadget, your file will be saved
  131. in standard IFF format to the filename specified.  Make sure the filename
  132. is valid.  Any error messages will be directed to the WorkBench screen
  133. in this case, since the SJ screen is too small even for a SYSTEM REQUEST.
  134.  
  135. CHIP or FAST?
  136. ~~~~~~~~~~~~~
  137.  
  138.     Screen Jaeger is unique in that it also allows you to graphically
  139. look at FAST memory, where graphics can be held but not displayed.  The
  140. way it works is no real trick, it simply allocates the proper amount of
  141. CHIP RAM and then copies the specified FAST RAM down into CHIP where
  142. the video chip can display it.
  143.  
  144.     NOTE: Never click on the "FAST" gadget until you have retrieved
  145. all that you need from CHIP memory, since some CHIP RAM will have to
  146. be allocated to store the FAST RAM display in.
  147.  
  148.     Although it must copy memory from FAST down to CHIP, I believe
  149. you will find it quite quick.  I know I was surprised at how fast it
  150. worked.
  151.  
  152.     The program will show you the upper and lower limits of your
  153. memory (both FAST and CHIP) if you click on the "INFO" gadget.
  154.  
  155. OVERSCAN SUPPORT
  156. ~~~~~~~~~~~~~~~~
  157.  
  158.     Screen Jaeger is also unique in that it supports overscan!  Since
  159. some applications use various levels of overscan (such as LOW, MEDIUM,
  160. HIGH, SEVERE, etc.) SJ lets you manually control the overscan amount.
  161. You may have to play until you find the "exact" width, but you have
  162. complete flexibility.  To move the display, simply click on the "OVERSCAN"
  163. toggle-gadget.  When you do this, the directional arrows now control
  164. the display offsets.  When you have the screen where you want it, click
  165. the "OVERSCAN" gadget again to revert to normal operation.  Keep in mind
  166. that when you modify the overscan position, you will probably also want
  167. to modify the WIDTH of the screen (from say 320 to 336 or 348).
  168.  
  169. AUTO BITPLANING
  170. ~~~~~~~~~~~~~~~
  171.  
  172.     Many times you will find one-bitplane of a screen, then another
  173. comes after it, and then another and so on.  To save you the hassle
  174. of setting up each bitplane, you can use the auto-bitplaning procedure
  175. to save time.  Here's how it works:
  176.  
  177.     a) Set the # of bitplanes to the proper amount.
  178.  
  179.     b) Work on bitplane #1, and position it in the proper place.
  180.  
  181.     c) Click on "AUTO".  That's it!
  182.  
  183.     Your display should now show the entire picture, although chances
  184. are the colors will be all wrong.  Note there is NO way for this program
  185. to retrieve color palette information, since it could be stored ANYWHERE
  186. in memory, and has no real unique way of being identified.
  187.     The auto feature will not work properly if the bitplanes are
  188. scattered in memory, or if the WIDTH and/or HEIGHT are not exactly
  189. as they should be.  For many applications however, it will work and
  190. will save you lots of time.
  191.  
  192. THE GADGETS IN DETAIL
  193. ~~~~~~~~~~~~~~~~~~~~~
  194.  
  195. The directional arrows: Normally move you through memory quickly.  Can
  196. be modified by other gadgets.
  197.  
  198. FINE: Makes the directional arrows move the screen in one-pixel increments
  199. (up and down) and one byte (8 pixels) left and right.
  200.  
  201. OVERSCAN: Makes the directional arrows move the display offsets appropriate-
  202. ly.  Like FINE, it's a toggle gadget so clicking it again will turn it off.
  203.  
  204. CLR MEM: This gadget will clear the LARGEST chunk of available memory
  205. (FAST or CHIP, whichever is currently selected).  It will NOT wreck
  206. any other applications that are running.  It is useful to run BEFORE you run
  207. the application you are trying to grab a screen from.  It clears out old
  208. information from other programs that may confuse you.
  209.  
  210. FAST: This gadget turns the display to FAST memory.  NOTE: This will
  211. take away and possibly destroy what's currently in CHIP RAM, so use
  212. this feature only after you have gotten what you need out of CHIP RAM.
  213.  
  214. CHIP: This feature (the DEFAULT setting) toggles from FAST RAM, and
  215. will deallocate any memory that was needed to display the FAST RAM.
  216.  
  217. 1,2,3,4,5,6: These gadgets simply control which bitplane offset you
  218. are currently working on.  Only one can be active at a time.
  219.  
  220. AUTO: This gadget tries to automatically line up the necessary number of
  221. bitplanes to form a picture.  See the explanation above for more details.
  222.  
  223. COPY: This gadget will copy the offset value from the currently selected
  224. bitplane to another.  Clicking COPY again without selecting a second
  225. bitplane to copy to will abort the operation.
  226.  
  227. SWAP: This gadget will swap the offset values of the currently selected
  228. bitplane with whichever one you click on next. Like copy, clicking a
  229. second time on the SWAP gadget cancels the operation.
  230.  
  231. HIRES: A toggle gadget which will change the display from 320 to 640
  232. pixels across, and vice versa.
  233.  
  234. LACE: A toggle gadget which will change the display from 200 to 400
  235. pixels up and down (NOTE: 256 and 512 on PAL systems).
  236.  
  237. XTRA_HB: Turns on EXTRA_HALFBRITE mode.  Note the program will warn you
  238. if you do not have 6 bitplanes currently selected (which are required
  239. for this mode to function properly).
  240.  
  241. HAM: Turns on HAM mode.  Like EXTRA_HALFBRITE, this mode requires 6
  242. bitplanes and will be tricky to get a display that looks correct.
  243. However, color assignment is extremely important, so even though
  244. the picture may not look correct, when you edit the colors with something
  245. like Digi-Paint (tm) things should correct themselves.
  246.  
  247. WIDTH/HEIGHT: These string gadgets let you manually control the width
  248. and the height of the display.  However, the display must be at least
  249. 1 pixel in either direction, but not greater than 1024X1024.
  250.  
  251. INFO: This gadget displays the UPPER and LOWER memory limits of both
  252. your CHIP and FAST RAM (if applicable).  It also tells you the overscan
  253. offsets (so you can check the severity) and also, how much memory the
  254. current display is using. Formula: WIDTH/8*HEIGHT*NUMBER_OF_BITPLANES.
  255. It also displays my name and the version number.
  256.  
  257. SAVE IFF: This will store the screen into whatever filename is specified
  258. in the string gadget.  MAKE SURE A VALID FILENAME IS IN THE STRING GADGET!
  259.  
  260. KEYBOARD COMMANDS
  261. ~~~~~~~~~~~~~~~~~
  262.  
  263.     B: Will send the control window to the back (so you can see
  264.        the entire screen). Same as AMIGA-N.
  265.  
  266.     F: Will send the control window to the front (so you can work
  267.        on the display again). Same as AMIGA-M.
  268.  
  269.     M: Will move the control window to the top of the display.
  270.            I originally wanted you to be able to view the bottom of the
  271.            screen that the window normally covers up, but you cannot
  272.        do it this way.  I left the code for this in anyway because
  273.            it only took a few bytes!
  274.  
  275.     N: Moves the control window back to the bottom of the screen.
  276.  
  277. KNOWN BUGS
  278. ~~~~~~~~~~
  279.  
  280.     The calculation on the PROPORTIONAL GADGET is not 100% correct.
  281. It is a strange formula and I am working (but not TOO hard, since it is
  282. not exactly critical) on fixing this problem.
  283.  
  284. POSSIBLE ENHANCEMENTS
  285. ~~~~~~~~~~~~~~~~~~~~~
  286.  
  287.     Since I've included the source code, maybe you can add some things
  288. to this program if you deem them useful or necessary (or you can always
  289. call/fax/write me and beg me to do it).  These are a couple of ideas:
  290.  
  291.     a) Make the overscan controllable just by holding the left button
  292.        down and moving the display in real-time.
  293.  
  294.     b) Re-write the whole thing in assembler to make it smaller and
  295.        faster (well, I don't want to do it..but ??!?)
  296.  
  297.     c) Add color-editing so you can make changes without using a paint
  298.        program (though you'll have to get around the problem of the
  299.        number of colors.  The control window display is only 2
  300.        bitplanes (4 colors)).
  301.  
  302.     d) Squeeze in or create a new "INFO" screen that shows the actual
  303.        offsets for each bitplane.  It's not greatly useful but could
  304.        be interesting.  I originally planned this for INFO but ran
  305.        out of room.
  306.  
  307. DISCLAIMERS
  308. ~~~~~~~~~~~
  309.  
  310.     a) This software is not guaranteed in any way.  Any liability
  311. concerning the use of this software is completely upon the user. Although
  312. I've never seen it blow up a machine, I am doing some NAUGHTY things.
  313. Anyway, for legal reasons I have to claim NO RESPONSIBILITY.
  314.  
  315.     b) I do not condone people stealing other people's work for
  316. profit.  The use of this program is for personal entertainment only.
  317. Use the graphics you grab for personal use, or just have fun looking
  318. through memory, but PLEASE DO NOT USE THE GRAPHICS in any other way.
  319. At least contact the company it originated from to ask their permission.
  320.  
  321.     c) This product is Freely Distributable, but it remains
  322. Copyrighted, ©1991 Legendary Design Technologies Inc.  If you make
  323. modifications to the source code, I would like to hear about it
  324. (especially if it's useful changes).
  325.  
  326.     d) I don't think my code will win any awards, but it is my code
  327. and I forbid anyone to use any part of it (or the whole thing) in any
  328. commercial product without my written consent.
  329.  
  330. ** THE MOST IMPORTANT NOTE: **
  331.  
  332.     Keep developers developing!  Buy commercial software, support
  333. shareware, and be thankful to those who contribute public domain and
  334. freely distributable software.  Without these people, what good would
  335. your computer be?
  336.     In my case I am not asking for money (I'll let you pay that for
  337. some of my upcoming commercial products) but you can show your
  338. appreciation in one of two ways:
  339.  
  340.     a) Donate a little money to the Cancer Society, or some other    
  341.        charity.
  342.  
  343.     b) Fax, Write, or Call me and let me know how this program is
  344.        working for you and what else you'd like to see me write.
  345.  
  346. For those of you familiar with SCREENMOD, it looks like a VERSION 1.1
  347. is in the works soon!
  348.  
  349.     Have a good day!  Amiga Rules...
  350.  
  351.     Syd Bolton
  352.     President
  353.     Legendary Design Technologies Inc.
  354.     25 Frontenac Avenue
  355.     Brantford, Ontario
  356.     N3R 3B7
  357.     (519)-753-6120  Voice/Answering Machine
  358.     (519)-754-4059  Fax
  359.     
  360.